微服务架构10条最佳实践
The following article is from SpringForAll社区 Author ForeverL888
转载自公众号:SpringForAll社区
确保你在分布式系统中,努力实现这些微服务的最佳实践,例如监控和REST成熟度。
使用微服务架构可以解决所有的软件架构的问题,对吗?当然,这是不对的。但是,使用微服务架构是有价值的。
Hüseyin Babal 最近发表了一个观点,即微服务架构是无法解决所有的问题的。但是,使用微服务架构是构建现代软件架构的坚实基础。在过去的许多年里,我们都知道维护单体应用而带来的挑战,所以 我们寻找一个新的选择来实现可持续,可扩展,易于集成的软件架构。以最佳实践为基础来实现微服务架构可以大幅度的改善你的软件架构。
Hüseyin 是aurea的首席软件架构师和Kloia的咨询师。他最近的演讲,微服务架构终极指南涵盖了他每天工作的大部分的经验和展现了实现微服务架构的最佳实践。
在他的演讲中,它使用Spring Boot来进行应用开发,Consul作为服务发现,Elasticsearrch 和Kibana作为监控,Docker和Jenkins作为持续交付。演讲中包含了十条最佳实践的代码示例演示。
最佳实践1 -- 尝试达到真正的REST
在意识到REST API的好处之后,我们可以查看上图的Leonard Richardson's 的成熟度模型,对于REST的使用有四个级别的定义。
级别0:使用一个端点来访问软件资源
级别1:使用相同的http方法来访问不同的资源
级别2:使用不用的http方法(例如 GET POST PUT DELETE)来访问不同的资源
级别3:API响应中拥有导航资源,这是真正的REST。
最佳实践2 -- 使用Spring HATEOAS
这个可以帮助你使用可导航的RESTful api接口。
最佳实践3 -- 使用分布式配置
通过这种方式,你不能一次性配置50不同的配置。Consul可以用来保持键/值的配置。
最佳实践4 -- 客户代码生成
Hüseyin 建议“要么使用Swagger来生成任何支持的语言的客户端代码,要么通过注解来使用Feign客户端,以及使用Ribbon进行客户端的负载均衡”。
最佳实践5 -- 持续交付
Hüseyin 使用Docker和Jenkins进行了持续交付的示例演示。
最佳实践6 -- 监控
事实上,监控无处不在。
最佳实践7 -- 日志
Hüseyin 指出大量的Docker 日志驱动。他通过使用GELF(Graylog Extended Log Format)来进行示例演示.
最佳实践8 -- APM
应用性能管理。APM通过搜集额外的详细信息来帮助你解决问题。Hüseyin 表示Zipkin是一个开源产品中的一个可选方案。
最佳实践9 -- 数据聚合到特定的客户端的API网关
最佳实践10 -- 事件订阅和CQRS(命令和查询响应分离)
一个命令可以改变一个对象的状态,但是不会返回数据。一个查询会返回数据,但是不会更改对象的状态。
原文:https://dzone.com/articles/10-best-practices-for-microservice-architectures
作者: Derek Weeks
译者:ForeverL888
- END -
近期热文:
程序员格斗指南
设计RPC接口时,你有考虑过这些吗?
阿里巴巴硅谷 Istio 专家解读Istio 1.0 发布
如何用图像识别玩忍术?
来自95后的天池中间件大赛总结
为Spring Cloud Config插上管理的翅膀
Spring Cloud Config采用Git存储时两种常用的配置策略
Hystrix降级逻辑中如何获取触发的异常?
重磅剧透!阿里巴巴计划开源 Nacos,为Dubbo生态发展铺路
Spring Cloud Config采用数据库存储配置内容
你可能会忽略的 Git 提交规范
SpringBoot应用部署于外置Tomcat容器
关注我